﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using InfoSIA;
using TagSystem.TagGroup;
using TagSystem.TAG;

namespace TagSystem
{
    public partial class TagMonitor : Form
    {

        TagManager tm = null;

        //public event MsgNotifier msgNotifierEvent;

        public static void Main()
        {
            Application.Run(new TagMonitor());
        }
        public TagMonitor()
        {
            InitializeComponent();

            tm = new TagManager();
            this.toolStripStatusLabel.Text = "TagManager avviato";

            InitializeTreeView();
            tm.msgNotifierEvent += new MsgNotifier(TagMonitor_msgNotifierEvent);
        }

        void TagMonitor_msgNotifierEvent(string message, MessageType msgType)
        {
            this.toolStripStatusLabel.Text = msgType.ToString()+ ": " + message ;
        }


        // Populates a TreeView control with example nodes. 
        private void InitializeTreeView()
        {

            
            

            tagTreeView.BeginUpdate();
            tagTreeView.ImageList = imageList;
            foreach (string sg in tm.getListaGruppi())
            {
                tagTreeView.Nodes.Add(sg, sg, 1);
                foreach (string st in tm.getListaTag(sg))
                {
                  tagTreeView.Nodes[sg].Nodes.Add( st, st, 2 );
                }
            }
            tagTreeView.EndUpdate();

        }

        private void chiudiToolStripMenuItem_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void infoToolStripMenuItem_Click(object sender, EventArgs e)
        {
            (new frmCredits()).Show();
        }

        private void tagTreeView_Click(object sender, EventArgs e)
        {

            //richTextBox.Text = richTextBox.Text + "\nclick";
        }

        private void tagTreeView_AfterSelect(object sender, TreeViewEventArgs e)
        {
            
            if (tm.ContainsGroup(e.Node.Name))
            {
                fillRichTextBoxGruppi(e.Node.Name);
            }
            
            if (tm.ContainsTag(e.Node.Name))
            {
                fillRichTextBoxTag(e.Node.Name);
            }
        }
      
        private void fillRichTextBoxGruppi(string nomeGruppo)
        {
            try
            {

                Gruppo g = tm.getGruppoByName(nomeGruppo);

                richTextBox.Text = "Nome Gruppo:\t" + g.NomeGruppo + "\n"
                    + "Indirizzo:\t\t" + g.IndirizzoIp + "\n"
                    + "Porta:\t\t" + g.Porta + "\n"
                    + "ScanRate:\t" + g.ScanRate + "\n\n"
                    + "Commento:\t" + g.Commento + "\n\n"
                    + "Info:\n" + g.ToString();
            }
            catch (Exception ex)
            {
                MessageBox.Show( ex.Message, "Problema con il Gruppo: " + nomeGruppo, MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            }
        }
        private void fillRichTextBoxTag(string nomeTag)
        {
            try
            {

                Tag t = tm.getTagByName(nomeTag);

                richTextBox.Text = "Nome Tag:\t" + t.NomeTag + "\n"
                    + "Nome Gruppo:\t" + t.NomeGruppo + "\n"
                    + "Indirizzo:\t\t" + t.Address + "\n"
                    + "Valore:\t\t" +  tm.getTagValueByName(nomeTag) + "\n"
                    + "Abilita Scrittura:\t" + t.WriteEnable + "\n"
                    + "Commento:\t" + t.Commento + "\n\n"
                    + "Valore Appoggio:\t" + t.Valore + "\n"
                    + "Info:\n" + t.ToString();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Problema con la TAG: " + nomeTag,  MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            }
        }

    
     

//Nome Tag	:
//Nome Gruppo	:

//Indirizzo		:
//Tipo		:
//Lettura/Scrittura	:

//Valore		:

//Commento	:
      //  }

    }
}
